Computer resource requirements for commercial and government applications often increase or otherwise fluctuate over time. For instance, a business may experience periods of peak activity that exceed comparable processing or memory requirements of other periods. In another scenario, sales or employee growth may similarly burden existing computing resources with increased requirements. When faced with these increased resource demands, a user would conventionally have to purchase new hardware resources capable of accommodating the elevated computing needs. Such purchase requirements can represent a major, if not preclusive, expenditure for a user, who may have insufficient capital or time to react to rapid growth requirements.
To this end, computing architectures such as the “capacity on demand” design, developed by International Business Machines Corporation, allow customers to effectively “rent” resources such as processors on an as-needed basis. More particularly, a customer may temporarily enable standby processors that are initially dormant within their machine. Where desired, the standby processors are not included in the up front, baseline cost of the machine. As such, for a relatively smaller initial capital investment, a customer may activate and deactivate standby processors as needed for a fee.
When enabled in a virtual processor environment, the standby processors are often shared among multiple processes. Such environments conventionally rely upon a single computing machine having one or more physical controllers, or central processing units (CPUs), to include both dedicated and activated standby processors. As such, active standby processors may execute software configured to simulate multiple, virtual processors.
Some multiprocessor environments support the conceptual practice of logical partitioning. Partitioning practices allow a single machine to simulate the functions of multiple, virtual computers. More particularly, each logical partition provides a programmed architecture suited for assignment and sharing of computing assets with other partitions. For instance, a partition may logically comprise a portion of a standby or dedicated processor, in addition to memory and other resources assigned by an administrator. As such, an administrator may allocate the same standby processor to more than one partition. Each partition may additionally host an operating system, in addition to multiple virtual processors. In this manner, each partition operates largely as if it is a separate computer.
In principle, each virtual processor enabled by a standby processor may access many of the physical resources of the underlying physical machine. Exemplary resources may include memory assets and hardware registers. Virtual processors may additionally share a priority scheme or schedule that partially dictates allocation of processing cycles as between different virtual processors. An underlying program called a partition manager, may use this scheme to assign and dispatch standby and baseline processors to each virtual processor. For instance, the partition manager may intercept requests for resources from operating systems to globally share and allocate the resources.
In this manner, virtual processors act as logical threads of execution for a host partition. As such, the virtual processors can separately execute instructions, while sharing a single standby processor, for instance. By duplicating the utilization of standby processors and other physical assets, a partitioned environment can promote better performance and efficiency. The programmable flexibility of partitions may further allow them to respond to changes in load dynamically without rebooting. For example, each of two partitions containing ten virtual processors may take over all ten available standby and baseline processors of a shared physical system as workload shifts, and without requiring a re-boot or operator intervention.
In such context, selective utilization of standby processors can thus provide customers with another layer of customized processor access and optimized usage. Conversely, capacity on demand systems supply system providers with a creative way to satisfy customer performance and cost requirements, while additionally providing an increased revenue source.
To this end, the customer's use of the standby processors must be monitored for billing and other accountability purposes. However, one problem that has arisen in connection with accounting for standby resources usage is that of addressing usages that exceed allotted limits. For instance, a situation may arise where it is impossible or undesirable to reclaim a standby processor within its prescribed window of activity. Such a scenario might arise where reclaiming the standby processor would affect an inviolate system requirement. Consequently, supervisory mechanisms are needed so that the billing company can properly account for unreturned standby processors. It may be desired, for example, to charge a higher fee for unreturned standby processors than for those reclaimed within a contractually stipulated time. Other considerations regard how unreturned standby processors should be reclaimed, if at all, when used in excess of the contracted time. There is thus a need for an improved manner of determining unreturned processor and other computer resource usage.